package com.duoduo.数组;

import java.util.Arrays;

/**
 * @program: algorithm
 * @description: 多数元素169
 * 给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
 *
 * 你可以假设数组是非空的，并且给定的数组总是存在多数元素。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：nums = [3,2,3]
 * 输出：3
 * 示例 2：
 *
 * 输入：nums = [2,2,1,1,1,2,2]
 * 输出：2

 * @author: chaidl  ！
 * @create: 2022-05-05 23:22
 */
public class 多数元素169 {
	public int majorityElement2(int[] nums) {
		Arrays.sort(nums);
		return nums[nums.length / 2];
	}
	public int majorityElement(int[] nums) {
		//对拼消耗的数字
		int currNum=nums[0];
		//对拼消耗的数字个数
		int count=1;
		for (int i = 1; i < nums.length; i++) {
			if (count==0){
				//如果count为0，就将当前数组设置为对拼数字
				currNum=nums[i];
				count=1;
			}else {
				//当前数字和对拼数字相等，++
				if (currNum==nums[i]){
					count++;
				}else {
					count--;
				}
			}
		}
		return currNum;
	}
}
